package admin

import (
	"game-server/app/common/request"
	"game-server/app/common/response"
	"game-server/app/services"

	"github.com/gin-gonic/gin"
)

// 分类
// @Summary 游戏分类添加
// @Description 游戏分类添加
// @Tags 游戏分类
// @Accept json
// @Produce json
// @Router /gameServer/admin/category/add [post]
// @Param data body request.CategoryAddRequest true "游戏分类添加"
func CategoryAdd(c *gin.Context) {
	var form request.CategoryAddRequest
	if err := c.ShouldBindJSON(&form); err != nil {
		response.ValidateFail(c, request.GetErrorMsg(form, err))
		return
	}

	if err := services.CategoryService.CreateCategory(form); err != nil {
		response.BusinessFail(c, err.Error())
		return
	}

	response.Success(c, nil)
}

// 游戏分类 更新
// @Summary 游戏分类 更新
// @Description 游戏分类 更新
// @Tags 游戏分类
// @Accept json
// @Produce json
// @Router /gameServer/admin/category/update [post]
// @Param data body request.CategoryUpdateRequest true "游戏分类 更新"
func CategoryUpdate(c *gin.Context) {
	var form request.CategoryUpdateRequest
	if err := c.ShouldBindJSON(&form); err != nil {
		response.ValidateFail(c, request.GetErrorMsg(form, err))
		return
	}

	if err := services.CategoryService.UpdateCategory(form); err != nil {
		response.BusinessFail(c, err.Error())
		return
	}

	response.Success(c, nil)
}

// 游戏分类 删除
// @Summary 游戏分类 删除
// @Description 游戏分类 删除
// @Tags 游戏分类
// @Accept json
// @Produce json
// @Router /gameServer/admin/category/delete [post]
// @Param data body request.CategoryDeleteRequest true "游戏分类 删除"
func CategoryDelete(c *gin.Context) {
	var form request.CategoryDeleteRequest
	if err := c.ShouldBindJSON(&form); err != nil {
		response.ValidateFail(c, request.GetErrorMsg(form, err))
		return
	}

	if err := services.CategoryService.DeleteCategory(form.Id); err != nil {
		response.BusinessFail(c, err.Error())
		return
	}

	response.Success(c, nil)
}

// 游戏分类 列表
// @Summary 游戏分类 列表
// @Description 游戏分类 列表
// @Tags 游戏分类
// @Accept json
// @Produce json
// @Router /gameServer/admin/category/list [post]
// @Param data body request.CategoryPageListRequest true "游戏分类 列表"
func CategoryList(c *gin.Context) {
	var form request.CategoryPageListRequest
	if err := c.ShouldBindJSON(&form); err != nil {
		response.ValidateFail(c, request.GetErrorMsg(form, err))
		return
	}

	data, err := services.CategoryService.GetCategoryList(form)
	if err != nil {
		response.BusinessFail(c, err.Error())
		return
	}

	response.Success(c, data)
}

// CategoryGetAll
// @Summary 游戏分类 列表
// @Description 游戏分类 列表
// @Tags 游戏分类
// @Accept json
// @Produce json
// @Router /gameServer/admin/category/getAll [post]
func CategoryGetAll(c *gin.Context) {
	data, err := services.CategoryService.GetAllCategory()
	if err != nil {
		response.BusinessFail(c, err.Error())
		return
	}
	response.Success(c, data)
}
